MPATH=$(realpath $(lastword $(MAKEFILE_LIST)))
CXX = g++

INCLUDES = -Iinclude -I../shared -I../shared/include
CPPFLAGS = -lGL -lGLU -lGLEW -lglut -Wall -lm -Wno-variadic-macros
CPPFLAGS += $(INCLUDES)

NOTHING = 
SPACE = $(NOTHING) $(NOTHING)


ifdef GPROF
	DBG = 1
	CPPFLAGS += -pg
endif

ifdef DBG
	CPPFLAGS += -Wall -pedantic -g 
else
	CPPFLAGS += -O3
endif


#ADD VERBOSE
ifdef VERBOSE
	CPPFLAGS += -DSHOW_DEBUG_OUTPUT=1
endif

OUTDIR = obj/
OUTFILE = main

SOURCE = $(wildcard *.cpp)
OBJ = $(OUTDIR)$(subst $(SPACE), $(OUTDIR),$(SOURCE:.cpp=.o))
EXTERNAL = ../shared/afmm/lib/afmm.a ../shared/lzma/lib/lzma.a ../shared/lodepng/lodepng.o

ABSOUT=$(MPATH:Makefile=)$(OUTDIR)

default:all

all:external $(OBJ)
	$(CXX) $(CPPFLAGS) -o $(OUTFILE) $(OBJ) $(EXTERNAL)
	
$(OUTDIR)%.o : %.cpp
	@mkdir -p $(OUTDIR)
	$(CXX) $(CPPFLAGS) -c $< -o $@

external:
	make -C ../shared/afmm -f Makefile
	make -C ../shared/lzma -f Makefile	
	make -C ../shared/lodepng -f Makefile
	
clean:
	$(RM) *.gch
	$(RM) $(OUTDIR)/*
	$(RM) -r $(OUTDIR)
	$(RM) -rf lib
	$(RM) main

clean-full: clean
	make -C ../shared/afmm -f Makefile clean
	make -C ../shared/lzma -f Makefile clean
	make -C ../shared/lodepng -f Makefile clean
